package main

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-12 10:02:58
 * @Description: 丑数 就是只包含质因数 2、3 和 5 的正整数
 给你一个整数 n ，请你判断 n 是否为 丑数 。如果是，返回 true ；否则，返回 false 。
 示例 1：

输入：n = 6
输出：true
解释：6 = 2 × 3
示例 2：

输入：n = 1
输出：true
解释：1 没有质因数，因此它的全部质因数是 {2, 3, 5} 的空集。习惯上将其视作第一个丑数。
示例 3：

输入：n = 14
输出：false
解释：14 不是丑数，因为它包含了另外一个质因数 7
*/

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-12 10:03:35
 * @Description: 根据丑数的定义，0 和负整数一定不是丑数。

当 n>0 时，若 n 是丑数，则 n 可以写成 n = 2^a * 3^b * 5^c

的形式，其中 a,b,c 都是非负整数。特别地，当 a,b,c 都是 0时，n=1。

为判断 nn是否满足上述形式，可以对 n 反复除以 2,3,5直到 n 不再包含质因数 若剩下的数等于 1，
则说明 n 不包含其他质因数，是丑数；否则，说明 n 包含其他质因数，不是丑数。

*/
func isUgly(n int) bool {
	if n <= 0 {
		return false
	}
	factors := [3]int{2, 3, 5}
	for _, factor := range factors {
		for n%factor == 0 {
			n /= factor
		}
	}
	return n == 1
}
